import axios from './../axios'
import Vue from 'vue'

const self = new Vue()

const http = {
  // 商品信息接口
  error (data, o) {
    console.log(o)
    if (o && o.params && o.params.errorNoAlert) {
      if (o.error) o.error.call(this, data)
      return
    }
    if (data.response && data.response.status === 401) {
      self.$error({
        title: '消息提示',
        content: '状态码401:鉴权失败'
      })
      return
    }

    if (data.response && data.response.status === 400) {
      self.$error({
        title: '消息提示',
        content: '状态码400:not Found'
      })
      return
    }

    if (data.response && data.response.data.message) {
      self.$error({
        title: '消息提示',
        content: data.response.data.message,
      })
    } else if (data.response && data.response.data.reason) {
      self.$error({
        title: '消息提示',
        content: data.response.data.reason,
      })
    } else if (data.response && data.response.data){
      self.$error({
        title: '消息提示',
        content: data.response.data,
      })
    }else {
      self.$error({
        title: '消息提示',
        content: data,
      })
    }

    if (o.error) o.error.call(this, data)
  },
  put (url, o) {
    axios
      .put(url, o.params || {})
      .then(({
        data
      }) => {
        if (o.success) o.success.call(this, data)
      })
      .catch(e => {
        console.error(e)
        if (e.name === 'TypeError') {
          http.error('系统异常', o)
        } else {
          http.error(e, o)
        }
      })
  },
  delete (url, o) {
    axios
      .delete(url, {})
      .then(({
        data
      }) => {
        if (o.success) o.success.call(this, data)
      })
      .catch(e => {
        console.error(e)
        if (e.name === 'TypeError') {
          http.error('系统异常', o)
        } else {
          http.error(e, o)
        }
      })
  },
  post (url, o) {
    axios
      .post(url, o.params || {})
      .then(({
        data
      }) => {
        if (o.success) o.success.call(this, data)
      })
      .catch(e => {
        console.error(e)
        if (e.name === 'TypeError') {
          http.error('系统异常', o)
        } else {
          http.error(e, o)
        }
      })
  },
  get (url, o) {
    console.log(url, o)
    axios
      .get(url, {params: o.params} || {})
      .then(({
        data
      }) => {
        if (o.success) o.success.call(this, data)
      })
      .catch(e => {
        console.log(e, 5566)
        if (e.name === 'TypeError') {
          http.error('系统异常', o)
        } else {
          http.error(e, o)
        }
      })
  }
}
export default http
